using octalforty.Waffle.ObjectModel.Business.Objects;

namespace octalforty.Waffle.ComponentModel.Navigation
{
    /// <summary>
    /// Resolves links to various parts of the system.
    /// </summary>
    public interface INavigationService : IService
    {
        /// <summary>
        /// Resolves a <paramref name="virtualUrl"/> to a fully-qualified URL.
        /// </summary>
        /// <param name="virtualUrl"></param>
        /// <returns></returns>
        string ResolveVirtualUrl(string virtualUrl);

        /// <summary>
        /// Returns a virtual URL to the Forum view page for <paramref name="forum"/>.
        /// </summary>
        /// <param name="forum"></param>
        /// <returns></returns>
        string GetForumUrl(Forum forum);

        /// <summary>
        /// Returns a virtual URL to the New Discussion page for <paramref name="forum"/>.
        /// </summary>
        /// <param name="forum"></param>
        /// <returns></returns>
        string GetNewDiscussionUrl(Forum forum);

        /// <summary>
        /// Returns a virtual URL to the Discussion view page for <paramref name="discussion"/>.
        /// </summary>
        /// <param name="discussion"></param>
        /// <returns></returns>
        string GetDiscussionUrl(Discussion discussion);
    }
}
